const { contextBridge, ipcRenderer } = require('electron');

// 通过 contextBridge 暴露安全的 API 给渲染进程
contextBridge.exposeInMainWorld('electronAPI', {
  // 获取系统信息
  getSystemInfo: () => ipcRenderer.invoke('get-system-info'),

  // 获取可用选项
  getAvailableOptions: () => ipcRenderer.invoke('get-available-options'),

  // 获取指定供应商的可用操作系统
  getOSForVendor: (vendor) => ipcRenderer.invoke('get-os-for-vendor', vendor),

  // 获取指定供应商和操作系统的可用架构
  getArchitecturesForVendorOS: (vendor, os) => ipcRenderer.invoke('get-architectures-for-vendor-os', { vendor, os }),

  // 获取指定操作系统和架构的可用供应商
  getVendorsForOSArch: (os, arch) => ipcRenderer.invoke('get-vendors-for-os-arch', { os, arch }),

  // 获取指定操作系统、架构和供应商的可用版本
  getVersionsForOSArchVendor: (os, arch, vendor) => ipcRenderer.invoke('get-versions-for-os-arch-vendor', { os, arch, vendor }),

  // 下载 JDK
  downloadJdk: (options) => ipcRenderer.invoke('download-jdk', options),

  // 监听下载进度
  onDownloadProgress: (callback) => {
    ipcRenderer.on('download-progress', callback);
    // 返回清理函数
    return () => ipcRenderer.removeListener('download-progress', callback);
  },

  // 移除所有监听器（用于清理）
  removeAllListeners: (event) => {
    ipcRenderer.removeAllListeners(event);
  }
});

// 监听来自渲染进程的消息，用于打开外部链接
window.addEventListener('message', (event) => {
  if (event.data && event.data.type === 'open-external' && event.data.url) {
    // 发送消息给主进程打开外部链接
    ipcRenderer.send('open-external-link', event.data.url);
  }
});
